Host processor systems may store and retrieve data using a storage device containing a plurality of host interface units (I/O modules), disk drives, and disk interface units (disk adapters). The host systems access the storage device through a plurality of channels provided therewith. Host systems provide data and access control information through the channels to the storage device and the storage device provides data to the host systems also through the channels. The host systems do not address the disk drives of the storage device directly, but rather, access what appears to the host systems as a plurality of logical disk units. The logical disk units may or may not correspond to any one of the actual disk drives. Allowing multiple host systems to access the single storage device unit allows the host systems to share data stored therein.
Although processers used to provide such storage devices have become faster over the years, much of the recent improvement in processor technology has been the result of providing multiple cores, which allows multiple threads to be executed simultaneously. Core with multiple processors facilitate processing performed in connection with a storage I/O device, since many different I/O operations from different hosts and possibly even different applications on each host are provided in parallel to the storage device. However, some application perform I/O operations that read and write large amounts of data per operation (e.g., a single read operation that reads one hundred tracks of data). A single read or write operation for a relatively large amount of data does not take advantage of parallel processing capabilities in storage devices or in connections between hosts and storage devices and drivers therefor. However, in instances where an application writer is aware of the possibility of performing parallel I/O operations for relatively small amounts of data, in many cases underlying drivers on a host that are not controlled by the application writer may automatically buffer data and cause multiple contiguous I/O operations to be presented to a storage device as a single I/O operation for a relatively large amount of data, thus negating any efforts by an application writer to take advantage of parallel I/O operation capabilities in a system. Note also that, in many instances, it may not be possible or practical to rewrite applications that run on hosts anyway.
Accordingly, it is desirable to provide a mechanism that takes advantage of parallel I/O capabilities in a system without the need to make adjustments to applications that run on hosts even when the applications perform I/O operations for relatively large amounts of data.